Server virtualization allows multiple virtual machines (VM) to run on a single physical server. Server virtualization allows users to move their servers to a cloud datacenter and to take advantage of the flexibility and scalability offered by running services on VMs. The IP addresses for existing virtual datacenters can make deployment of VMs labor intensive. Particularly, when the cloud service providers require users to change the IP addresses for services when the services are moved to the cloud environment. The IP address may have real semantic meaning to an enterprise. For example, network, security, compliance, and performance policies often incorporate and are dependent on the actual IP address of a given service. Moving a service to existing cloud providers requires rewriting of all these policies to take into account the new IP addresses for the services. This can be difficult because the policies may be spread among a number of different organizations that control those policies. Each time a user moves to a different cloud provider, the new service provider assigns a different set of IP addresses, which would require another policy rewrite. The current situation blocks many users and scenarios from adopting the cloud.
Network virtualization allows customer virtual machine networks to decouple from physical networks so that customers can bring their existing IP addresses and topologies into cloud datacenters. Network virtualization allows customers to keep the original IP address configuration of their network after the server is virtualized into the cloud. Servers continue to have the same IP address after being moved to the cloud datacenter.
Network virtualization may be achieved by assigning multiple IP addresses, such as a Customer Address and a Provider Address, to the virtual machines in the cloud datacenter. Using these IP addresses, traffic flows between an on-premise customer location and a customer's virtualized cloud server using the original IP addresses. Servers that are on-premise communicate with cloud servers using the original IP address and are unaware of the Provider Address, which is only exposed to a network virtualization edge, such as a virtual machine host. Network virtualization is accomplished by virtualizing the IP addresses and having an association with the provider address. The VM network packets are modified to include this association, thereby allowing multiple virtual networks with overlapping customer IP addresses to run on one physical network.
Network virtualization is a key technology to allow operation of a multi-tenant datacenter using software-based isolation. Network virtualization decouples the virtual networks for a tenant from the underlying physical network by sending tenant traffic in a tunneling protocol, such as network virtualization GRE (NVGRE) or Virtual Extensible LAN (VxLAN). However, current network virtualization solutions encode only minimal information in the tunneling protocol. As a result, the current solutions provide only basic packet forwarding and routing functionality. This limits the things that can be done with network virtualization and limits the efficiency of network virtualization implementation.